package com.agile.leetcode.erjinzhi;

import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;

/**
 * @author chenzhangkun
 * @ClassName Chinese
 * @description: TODO
 * @date 2025年01月08日
 */
public class Chinese {
	public static void main(String[] args) throws UnsupportedEncodingException {


		String name="陈彰坤";

		System.out.println(Arrays.toString(name.getBytes(StandardCharsets.UTF_8)));
		/**
		 * b & 0xFF:
		 * b 是一个 byte 类型的变量。
		 * 0xFF 是一个十六进制数，表示255（即二进制的11111111），它是一个无符号的8位整数。
		 * b & 0xFF 的作用是确保字节 b 被解释为一个无符号的8位整数。这是因为Java中的 byte 是有符号类型，范围是-128到127。通过与0xFF进行按位与操作，可以保证结果在0到255之间。
		 * Integer.toBinaryString(...):
		 * 这个方法接受一个整数并返回其二进制字符串表示。
		 * 例如，如果 b 是 65，那么 Integer.toBinaryString(65) 返回 "1000001"。
		 * .replace(' ', '0'):
		 * 这一步是为了处理 String.format 中可能引入的空格。
		 * 实际上，在这里使用 replace(' ', '0') 是不必要的，因为 String.format 使用的是占位符填充而不是直接插入空格。这个替换操作在这里不会改变任何东西，除非之前有其他地方引入了空格字符。
		 * String.format("%8s ", ...):
		 * %8s 是格式化字符串的一部分，用于指定最小宽度为8的字符串格式。
		 * 如果提供的字符串长度小于8，则会在左边填充空格以达到8个字符的总长度。
		 * 在这个例子中，我们希望填充的是0而不是空格，因此通常会结合 replace 方法来替换这些空格。
		 */
		// 将每个字节转换为二进制字符串并输出
		for (byte b : name.getBytes(StandardCharsets.UTF_8)) {
			System.out.printf("%8s ", Integer.toBinaryString(b & 0xFF).replace(' ', '0'));
		}
	}
}
